//
//  CCDHttpBaseTool.h
//  crowd
//
//  Created by 马腾飞 on 16/4/14.
//  Copyright © 2016年 caocaod.com. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AFNetworking.h"
#import <UIKit/UIKit.h>


@interface AFHttpClient : AFHTTPSessionManager

+ (instancetype)sharedClient;

@end

typedef void (^HttpSuccessBlock) (id JSON);
typedef void (^HttpFailureBlock) (NSError *error);

@interface CCDHttpBaseTool : NSObject

/**
 *  AFN get请求
 *
 *  @param path URL地址
 *
 *  @param params 请求参数 (NSDictionary)
 *
 *  @param success 请求成功返回值（NSArray or NSDictionary）
 *
 *  @param failure 请求失败值 (NSError)
 */
+ (void)getWithPath:(NSString *)path
             params:(NSDictionary *)params
            progress:(UIProgressView *)progressView
            success:(HttpSuccessBlock)success
            failure:(HttpFailureBlock)failure;

/**
 *  AFN post请求
 *
 *  @param path URL地址
 *
 *  @param params 请求参数 (NSDictionary)
 *
 *  @param success 请求成功返回值（NSArray or NSDictionary）
 *
 *  @param failure 请求失败值 (NSError)
 */
+ (void)postWithPath:(NSString *)path
              params:(NSDictionary *)params
             progress:(UIProgressView *)progressView
             success:(HttpSuccessBlock)success
             failure:(HttpFailureBlock)failure;


/**
 *  AFN POST上传图片
 *
 *  @param path URL地址
 *
 *  @param params 请求参数 (NSDictionary)
 *
 *  @param success 请求成功返回值（NSArray or NSDictionary）
 *
 *  @param failure 请求失败值 (NSError)
 *
 *  @param imagePath 需要上传的图片数组，二进制格式的图片
 */
+ (void)postImagePath:(NSString *)path
               params:(NSDictionary *)params
                image:(NSString *)imagePath
             progress:(UIProgressView *)progressView
              success:(HttpSuccessBlock)success
              failure:(HttpFailureBlock)failure;

/**
 *  AFN 下载
 *
 *  @param downloadURLString URL地址
 *
 *  @param targetPath 文件保存路径
 *
 */
+ (void)downloadWithURL:(NSString *)downloadURLString
             targetPath:(NSString *)targetPath;

/**
 *  上传带图片的内容，允许多张图片上传（URL）POST
 *
 *  @param url                 网络请求地址
 *  @param images              要上传的图片数组（注意数组内容需是图片）
 *  @param parameter           图片数组对应的参数
 *  @param parameters          其他参数字典
 *  @param ratio               图片的压缩比例（0.0~1.0之间f
 *  @param succeedBlock        成功的回调
 *  @param failedBlock         失败的回调
 *  @param uploadProgressBlock 上传进度的回调
 */
//+(void)startMultiPartUploadTaskWithURL:(NSString *)url
//                           imagesArray:(NSArray *)images
//                     parameterOfimages:(NSString *)parameter
//                        parametersDict:(NSDictionary *)parameters
//                      compressionRatio:(float)ratio
//                          succeedBlock:(void(^)(id operation, id responseObject))succeedBlock
//                           failedBlock:(void(^)(id operation, NSError *error))failedBlock
//                   uploadProgressBlock:(void(^)(float uploadPercent,long long totalBytesWritten,long long totalBytesExpectedToWrite))uploadProgressBlock;
@end
